package homeword;
import java.util.Scanner;
/**
 * 学生管理系统主类
 * 功能说明：
 * 1.                 case 2: // 删除学生信息功能
                    System.out.println("请输入你希望删除的学生信息学号若不存在则会返回"删除失败"");
                    String delId=scanner.next();
                    boolean flag=true;  // 用于标记是否找到并删除学生数组：存储学生对象，保证学号和姓名唯一性
 * 2. 添加学生：添加时进行学号唯一性检查
 * 3. 删除学生：根据ID删除并自动整理数组
 * 4. 查询功能：根据学号查询学生信息
 * 5. 修改功能：支持修改学生年龄信息

*/
//定义一个长度为 3 的数组，数组存储 1 - 3 名学生对象作为初始数据，学生对象的学号，姓名各不相同。学生的属性：学号，姓名，年龄。
//再次添加一个学生对象，并在添加的时候进行学号的唯一性判断。
//添加完毕之后，遍历所有学生信息。
//通过 id 删除学生信息，如果存在，则删除，如果不存在，则提示删除失败。
//删除完毕之后，遍历所有学生信息。
//查询数组 id 为 “heima002” 的学生，如果存在，则将他的年龄 + 1 岁 。
 public class objectArray5Main {
    /**
     * 程序主入口
     * 实现了学生信息的基本管理功能
     */
    public static void main(String[] args) {
        // 创建学生数组，设置初始容量为4
        objectArray5 []students=new objectArray5[4];
        // 创建两个学生对象，作为初始数据
        objectArray5 stu1=new objectArray5("001","小红",18);
        objectArray5 stu2=new objectArray5("002","小黄",20);

        // 将学生对象添加到数组中
        students[0]=stu1;
        students[1]=stu2;

        // 创建第三个学生对象
        objectArray5 stu4=new objectArray5("007","小蓝",25);
        // 添加前检查学号是否重复，避免重复录入
        if(students[0].contains(students,stu4.getID())){  // 注意这里加了一个!，表示当没有重复时才添加
            // 数组扩容处理：
            // 1. 如果数组已满，创建新数组并复制现有数据
            // 2. 如果数组未满，则直接在末尾添加
            objectArray5 []newArr=students[0].newArr(students);
            newArr[newArr.length-1]=stu4;
            // 显示当前所有学生信息
            students[0].showArr(newArr);
        }
        else
        {
            System.out.println("当前ID已存在");
        }
        Scanner scanner=new Scanner(System.in);
        while(true) {
            System.out.println("\n=== 学生管理系统 ===");
            System.out.println("1. 查询学生信息");
            System.out.println("2. 删除学生信息");
            System.out.println("3. 修改学生年龄");
            System.out.println("4. 显示所有学生");
            System.out.println("5. 退出系统");
            int n = scanner.nextInt();
            // 根据用户选择执行相应的操作
            switch (n) {
                case 1: // 查询学生信息功能
                System.out.println("请输入你查询的学号");
                boolean found=false;  // 标记是否找到该学生
                String searchId=scanner.next();
               for (int i=0;i<students.length;i++) {
                   objectArray5 stu=students[i];
                if (stu != null && stu.getID().equals(searchId)) {
                    System.out.println("找到学生：");
                    System.out.println("学号：" + stu.getID());
                    System.out.println("姓名：" + stu.getName());
                    System.out.println("年龄：" + stu.getAge());
                    found = true;
                    break;
                }
            }
            if (!found) {
                System.out.println("未找到该学号的学生！");
            }
            break;
                case 2:
                    System.out.println("请输入你希望删除的学生信息学号若不存在则会返回“删除失败”");
                    String delId=scanner.next();
                    boolean flag=true;
                    for (int i = 0; i < students.length; i++) {
                        if(students[i]!=null && students[i].getID().equals(delId)){
                            System.out.println("已经删除学号为："+students[i].getID()+"的学生");
                            // 通过数组元素移动来删除学生
                            //存储删除信息的下标
                            int deleteId=i;
                            int lastNonNull=-1;
                            for (int j = 0; j < students.length; j++) {
                                if(students[j]!=null && j!=deleteId){
                                 lastNonNull++;
                                 students[lastNonNull]=students[j];
                                 if(j>deleteId){
                                     students[j]=null;
                                 }
                                }
                            }
                            flag=false;
                        }
                    }
                    if(flag){
                    System.out.println("删除失败");
                }
                    //输出删除后的信息
                    System.out.println("删除后的信息为：");
                    students[0].showArr(students);
                    break;
                case 4:
                    System.out.println("现有的学生信息为：");
                    students[0].showArr(students);
                default:
                    System.out.println("请输入正确的格式");
            }
        }

    }

}
